package com.koron.css2.clientCenter.mapper;


import com.koron.css2.clientCenter.bean.CtmChangeInfoBean;
import com.koron.css2.clientCenter.bean.CtmInfoBean;
import com.koron.css2.clientCenter.queryBean.CtmInfoQueryBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;
/**
 * 客户,tableType:1为正式表，2为临时表，3为历史表
 * @author 甄玉晴
 *
 */
public interface CtmInfoMapper {

	/**
	 * 根据账户户编号统计记录数
	 * @param ctmNo 账户户编号
	 * @return
	 */
	int countByCtmNo(String ctmNo);

	/**
	 * 批量修改客户信息状态字段值
	 * @param idList 主键ID集合
	 * @param status 状态值
	 * @param tableType
	 * @return
	 */
	int batchUpdateStatus(@Param("idList")  List<String> idList, @Param("status") int status, @Param("tableType") int tableType);

	/**
	 * 根据证件号码查询客户列表
	 */
	List<CtmInfoBean> querySameClient(@Param("certNo") String certNo, @Param("tableType") int tableType);
	/**
	 * 根据证件号码查询有账户的客户列表
	 */
	List<CtmInfoBean> querySameAccountClient(@Param("certNo") String certNo);
	/**
	 * 根据Id查询临时客户信息
	 * @param id
	 * @return
	 */
	public CtmInfoBean getCtmInfoById(@Param("id")String id,@Param("tableType")int tableType);

	public List<CtmInfoBean> selectListByIds(@Param("idList") List<String> idList, @Param("tableType") int tableType);
	/**
	 * 添加临时客户信息
	 * @param bean
	 * @return
	 */
	public Integer ctmInfoAdd(@Param("bean") CtmInfoBean bean,@Param("tableType")int tableType);
	/**
	 * 添加临时客户信息List
	 * @param bean
	 * @return
	 */
	public Integer ctmInfoAddList(@Param("list")List<CtmInfoBean> list,@Param("tableType")int tableType);

	/**
	 * 基于id修改客户信息
	 * @param bean
	 * @return
	 */
	public Integer ctmInfoUpdate(@Param("bean") CtmInfoBean bean,@Param("tableType")int tableType);
	/**
	 * 修改用户、账户、客户信息
	 * @param bean
	 * @return
	 */
	public Integer ctmInfoUpdateNull(@Param("updateSql") String updateSql);

	/**
	 * 基于ctm_no修改客户信息
	 * @param bean
	 * @return
	 */
	public Integer ctmInfoUpdateByCtmNo(@Param("bean") CtmInfoBean bean,@Param("tableType")int tableType);

	/**
	 * 删除客户信息
	 * @param id
	 * @return
	 */
	public Integer ctmInfoDelete(@Param("id")String id,@Param("tableType")int tableType);

	/**
	 * 根据用户编号获取客户信息
	 *
	 * @param ctmNo
	 * @return
	 */
	CtmInfoBean getCtmInfoByCtmNo(@Param("ctmNo") String ctmNo, @Param("tableType")int tableType);
	/**
	 * 根据条件查询客户信息
	 * @param bean
	 * @return
	 */
	CtmInfoBean ClientInfoList(@Param("bean")CtmInfoBean bean,@Param("tableType")int tableType);
	/**
	 * 更改客户状态
	 * @param ctmNo
	 * @return
	 */
	Integer ctmInfoStatusUpdate(@Param("ctmNo")String ctmNo,@Param("type")int type);
	/**
	 * 增加客户变更信息
	 * @param bean
	 * @return
	 */
	Integer ctmChangeInfoAdd(CtmChangeInfoBean bean);
	/**
	 * 过户修改客户信息
	 * @param bean
	 * @return
	 */
	public Integer ctmInfoUpdateForTransfer(@Param("bean") CtmInfoBean bean,@Param("tableType")int tableType);

	CtmInfoBean getCtmByAccountNo(@Param("accountNo") String accountNo);

	List<CtmInfoBean> getCtmNameByNos(@Param("ctmNos") List<String> ctmNos);

	void updateStatusByCtmNo(@Param("ctmNo") String ctmNo, @Param("status") int status);

	List<CtmInfoBean> getListByIdList(@Param("userCtmTempIdList") List<String> userCtmTempIdList, @Param("tableType")int tableType);

	List<CtmInfoBean> getListByCertNo(@Param("certNo") String certNo);

	void batchDelete(@Param("query") CtmInfoQueryBean ctmInfoQueryBean, @Param("tableType")int tableType);

	List<CtmInfoBean> getListByCtmNoList(@Param("ctmNoList") List<String> ctmNoList, @Param("tableType")int tableType);

	/**
	 * 基于立户模块，根据ID修改USER_CTM的用户编号
	 * */
	void updateCtmNo(@Param("ctmNo")String ctmNo, @Param("id")String id);
}
